package practice;

import java.io.*;
import java.util.HashMap;

/*
    练习：对文本内容进行排序：按照1,2,3...顺序排序
    分析：
        1.创建一个HashMap集合对象（因为是键值对的形式），其中key：用来存放每行的行号， value：用来存放每行的文本
        2.创建字符缓冲输入流，构造方法中绑定字符输入流
        3.创建字符缓冲输出流，构造方法中绑定字符输出流
        4.使用字符缓冲输入流中的readLine（）逐行读取文本
        5.对读取到的内容进行分割，获取行中的序号和文本内容
        6.把切割好的序号和文本内容存储到HashMap集合中（key中的序号是有序的，因为会自动排序）
        7.遍历HashMap集合，获取每一个键值对
        8.把每一个键值对拼接成一个文本行
        9.把拼接好的文本。使用字符缓冲输出流中的write（）写入到文本中
        10.释放资源
 */
public class PracticeMain {
    public static void main(String[] args) throws IOException {
        HashMap hashMap = new HashMap();
        BufferedReader bufferedReader = new BufferedReader(new FileReader("E:\\idea\\IntelliJ IDEA 2020.3\\perject_idea\\20210325\\c.txt"));
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("E:\\idea\\IntelliJ IDEA 2020.3\\perject_idea\\20210325\\g.txt"));
        //4.使用字符缓冲输入流中的readLine（）逐行读取文本
        String len;
        while ((len = bufferedReader.readLine()) != null){  //为nill说明读取结束
            // 5.对读取到的内容进行分割，获取行中的序号和文本内容
            String[] arr = len.split("\\.");//将获读取到的文本按 . 进行分割（分割函数）,并返回
            //6.把切割好的序号和文本内容存储到HashMap集合中（key中的序号是有序的，因为会自动排序）
            hashMap.put(arr[0],arr[1]);  //每分割一次，就将分割好的两部存储到集合中（arr[0]：按.分割的部分,arr[1]：文本部分）
        }
        // 7.遍历HashMap集合，获取每一个键值对(增强for)
        for (Object key : hashMap.keySet()) {
            String value = (String) hashMap.get(key);  //获取每一个key对应的value
            //9.把拼接好的文本。使用字符缓冲输出流中的write（）写入到文本中
            len = key + "." + value;//每一行的形式
            bufferedWriter.write(len);
            bufferedWriter.newLine();  //换行
        }
        bufferedWriter.close();
        bufferedReader.close();
    }
}
